const fs = require('fs');
  //多个异步任务同步化的解决方案
  //1.回调地狱 麻烦 可读性极低
  //包袱可以抖出
// fs.readFile('./a.txt',(err,data)=>{
//     //node 后端哲学，容错第一
//     //方方面面考虑
//     if(err){
//         console.log(err);
//         return;
//     }
//     //回调函数 (最早的异步解决方案)
//     //二进制格式 Buffer
//     console.log(data.toString());
//     resizeBy.push(data.toString())

//     fs.writeFile('./b.txt',data,(err)=>{
//         if(err){
//             console.log(err);
//             return;
//         }
//         resizeBy.push(data.toString())
//     })
// })

// es6 提供promise ，优于回调的异步解决方案
// const readFilePromise = (url) => {
//     return new Promise((resolve,reject)=>{
//         fs.readFile(url,(err,data)=>{
//             if(err){
//                 reject(err);
//                 return;
//             }
//             resolve(data.toString());
//         })
//     })
// }

// readFilePromise('./a.txt')
//   .then((txt)=>{
//     res.push(txt);
//     return readFilePromise('./b.txt');//链式调用 返回一个promise
//   })
//   .then((txt2)=>{
//     res.push(txt2);
//     return readFilePromise('./c.txt');
//   })
//  .then((txt3)=>{
//     res.push(txt3);
//     console.log(res);
//   })
//   .catch((err)=>{
//     console.log(err);
//   })
//   .finally(()=>{
//     console.log('finally',res)
//   })

//   console.log(res);
//es8 async await

(async() =>{
    const textA = await readFilePromise('./a.txt');
    res.push(textA);
    const textB = await readFilePromise('./b.txt');
    res.push(textB);
    const textC = await readFilePromise('./c.txt');
    res.push(textC);
    console.log(res);
})